MVCC এর ধারণা

Database Tutorials - এইচ২ ডাটাবেস (H2 Database) H2 Database এর Multi-Version Concurrency Control (MVCC) |
229
229

Multi-Version Concurrency Control (MVCC) হল একটি ডেটাবেজের কনকারেন্ট অ্যাক্সেস কন্ট্রোল মেকানিজম যা একই সময়ে একাধিক ব্যবহারকারী বা থ্রেডের মধ্যে ডেটাবেজে একাধিক অপারেশন চালানোর সুযোগ দেয়, এবং সেগুলোর মধ্যে কনফ্লিক্ট এড়িয়ে কাজ করতে সহায়ক। MVCC-কে সাধারণত ডেটাবেজের কনকারেন্সি এবং ইসোলেশন স্তরের উন্নতির জন্য ব্যবহৃত হয়।

H2 Database, PostgreSQL, MySQL-এর InnoDB ইঞ্জিন এবং অন্যান্য বেশ কিছু ডেটাবেজ সিস্টেম MVCC সমর্থন করে, যা ডেটাবেজের পারফরম্যান্স বৃদ্ধি করে এবং লকিংয়ের মাধ্যমে ডেটার অ্যাক্সেসের সীমাবদ্ধতা কমায়।


MVCC এর কাজের প্রক্রিয়া

MVCC ব্যবহার করে, ডেটাবেজ সিস্টেম একটি বহু সংস্করণ (Multiple Versions) তৈরি করে, যেখানে প্রতিটি রেকর্ডের একাধিক সংস্করণ থাকে। প্রতিটি রেকর্ড বা টেবিলের সংস্করণ নির্ধারণ করা হয় টাইমস্ট্যাম্প বা ট্রানজ্যাকশন আইডি দ্বারা। এর ফলে, বিভিন্ন ইউজার বা ট্রানজ্যাকশন একই ডেটার উপর একাধিক অপারেশন করতে পারে এবং একে অপরকে প্রভাবিত না করে কাজ করতে পারে।

MVCC প্রক্রিয়াতে প্রধানত দুটি পদ্ধতি ব্যবহৃত হয়:

  1. ডেটা সংস্করণ সংরক্ষণ: যখন একটি ট্রানজ্যাকশন ডেটাকে পরিবর্তন করে, এটি ডেটার নতুন সংস্করণ তৈরি করে, পুরানো সংস্করণটি তখনও ডেটাবেজে রয়ে যায়।
  2. ট্রানজ্যাকশন আইসোলেশন: একটি ট্রানজ্যাকশন শুধুমাত্র তার নিজের সংস্করণ দেখে, এবং অন্য কোনো ট্রানজ্যাকশন এর মধ্যে পরিবর্তন করা ডেটা দেখতে পায় না যতক্ষণ না ট্রানজ্যাকশনটি সম্পন্ন না হয়।

MVCC এর সুবিধা

  1. কনকারেন্ট ডেটা অ্যাক্সেস: MVCC একাধিক ট্রানজ্যাকশনকে একই ডেটার উপর কাজ করতে দেয়, যার ফলে ডেটাবেজে লকিং কম হয় এবং এটি ডেটাবেজের পারফরম্যান্স বৃদ্ধি করে।
  2. ডেটা ইন্টিগ্রিটি বজায় রাখা: যখন একটি ট্রানজ্যাকশন ডেটা পরিবর্তন করে, তখন অন্য ট্রানজ্যাকশনটি পুরানো সংস্করণ ব্যবহার করতে পারে এবং পরিবর্তনগুলি যতক্ষণ না সম্পূর্ণ হয়, ততক্ষণ সে দেখতে পায় না।
  3. হাই পারফরম্যান্স: MVCC লকিংয়ের প্রয়োজনীয়তা কমায়, ফলে একটি সিস্টেম একাধিক ট্রানজ্যাকশন একযোগে পরিচালনা করতে সক্ষম হয়। এটি বিশেষত উচ্চ ট্রাফিক সিস্টেমে সহায়ক।
  4. অপারেশন কনফ্লিক্ট হ্রাস: একাধিক ব্যবহারকারী একই সময়ে ডেটাবেজে কাজ করতে পারে, কিন্তু কোনো ধরনের কনফ্লিক্ট তৈরি হয় না কারণ তারা আলাদা সংস্করণ ব্যবহার করে।

MVCC এর উদাহরণ

ধরা যাক, একটি users টেবিল রয়েছে, এবং দুটি ট্রানজ্যাকশন (T1 এবং T2) একই রেকর্ড আপডেট করতে চায়।

Scenario 1:

  • T1: UPDATE users SET name = 'Alice' WHERE id = 1; — T1 একটি রেকর্ড আপডেট করেছে।
  • T2: SELECT name FROM users WHERE id = 1; — T2 একই রেকর্ডটি পড়ে এবং এটি পুরানো মান (যেমন "Bob") পায়, কারণ T1 এখনও ডেটাবেজের মধ্যে তার পরিবর্তনটি সম্পন্ন করেনি।

এখানে, T1 এবং T2 কোনো ধরনের কনফ্লিক্ট সৃষ্টি না করে তাদের কাজ সম্পন্ন করতে পারছে, কারণ T2 শুধুমাত্র পুরানো সংস্করণ দেখতে পাচ্ছে।

Scenario 2:

  • T1: UPDATE users SET name = 'Alice' WHERE id = 1;
  • T2: UPDATE users SET name = 'Bob' WHERE id = 1;

এখানে, T1 এবং T2 একে অপরকে ব্লক না করেই ডেটা পরিবর্তন করতে পারে। কিন্তু, T2 যখন UPDATE করার জন্য কাজ করবে, T1-এ পরিবর্তনগুলি লক না করেই দেখতে পাবে না। সুতরাং, এই প্রক্রিয়া শেষ হয়ে গেলে, দুইটি ভিন্ন সংস্করণ থাকবে।


MVCC এর জন্য H2 এর কাজের পদ্ধতি

H2 ডেটাবেজে, MVCC স্বয়ংক্রিয়ভাবে কাজ করে, যেখানে প্রতিটি ট্রানজ্যাকশন একটি আলাদা সংস্করণে ডেটা দেখতে পায় এবং অন্য ট্রানজ্যাকশনগুলি পরিবর্তন করতে গেলে, সেগুলোর জন্য আলাদা সংস্করণ তৈরি করা হয়। এটি ACID বৈশিষ্ট্য নিশ্চিত করতে সহায়ক।

প্রধান বৈশিষ্ট্য:

  • অটোমেটিক ভার্সনিং: H2 ডেটাবেজ সিস্টেম প্রয়োজনীয় সকল ডেটার জন্য স্বয়ংক্রিয়ভাবে সংস্করণ তৈরি করে।
  • কনফ্লিক্ট ম্যানেজমেন্ট: একাধিক ট্রানজ্যাকশন একই রেকর্ডের উপর কাজ করতে পারলেও, একটি ট্রানজ্যাকশন তার সংশ্লিষ্ট সংস্করণ পাবে, যা অন্য ট্রানজ্যাকশন থেকে আলাদা থাকবে।
  • লকিংহীন ডেটা অ্যাক্সেস: ট্রানজ্যাকশনগুলি একে অপরকে ব্লক না করে তাদের কাজ সম্পন্ন করতে পারে, যার ফলে পারফরম্যান্স বৃদ্ধি পায়।

MVCC এর সমস্যাগুলি

যদিও MVCC একটি শক্তিশালী কনকারেন্সি কন্ট্রোল প্রযুক্তি, তবুও এর কিছু সীমাবদ্ধতা এবং চ্যালেঞ্জ রয়েছে:

  1. ডেটা স্টোরেজের বৃদ্ধি: সংস্করণের কারণে ডেটাবেজে অতিরিক্ত ডেটা সংরক্ষণ হতে পারে, বিশেষ করে যখন ডেটা অনেক পরিবর্তিত হয়।
  2. পুরানো সংস্করণের সাফিং: পুরানো সংস্করণগুলির garbage collection বা cleanup প্রক্রিয়া ঠিকভাবে পরিচালনা না করলে, ডেটাবেজে অব্যবহৃত ডেটা জমে যেতে পারে।

সারাংশ

MVCC (Multi-Version Concurrency Control) একটি অত্যন্ত কার্যকরী কনকারেন্সি কন্ট্রোল মেকানিজম, যা ডেটাবেজে একাধিক ট্রানজ্যাকশনকে একই সময়ে ডেটার উপর কাজ করার সুযোগ দেয় এবং ডেটা ইনটিগ্রিটি ও পারফরম্যান্স নিশ্চিত করে। H2 ডেটাবেজে MVCC সিস্টেম ব্যবহার করে লকিং কমানো হয়, যার ফলে একাধিক ব্যবহারকারী বা অ্যাপ্লিকেশন একযোগে ডেটাবেজে কাজ করতে পারে।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion